perm filename GCREF.FAI[SYS,HE]4 blob
sn#049226 filedate 1973-06-13 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00020 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00003 00002 TITLE GCREF - MULTI FILE CREF LISTINGS
C00005 00003 GET THE COMMAND LINE AND PUT INTO THE COMMAND BUFFER
C00009 00004 PROCESS A SWITCH IF / IS BREAK CHARACTER
C00012 00005 NOW WE HAVE FINISHED SCANNING COMMAND LINE
C00014 00006 FIND CORRECT PAGE OF FILE
C00017 00007 HAVING FOUND CORRECT PAGE, SCAN IT AND BUILD DATA STRUCTURE
C00020 00008 KEEP ON BUILDING STRUCTURE
C00023 00009 END OF STRUCTURE BUILDING - NOW WE OUTPUT IT
C00025 00010 RECURSIVE OUTPUT ROUTINE
C00029 00011 GET ONE PART OF FILE SPECS
C00031 00012 MAGIC DECIMAL CONVERSION ROUTINE
C00033 00013 STRING EQUALITY TEST
C00035 00014 CREATE A NEW IDENTIFIER BLOCK
C00037 00015 THIS IS THE MAGIC 6-STATE, TABLE DRIVEN, INPUT PARSER
C00040 00016 MORE BRANCHES FOR INPUT SCANNER
C00042 00017 STILL MORE BRANCHES
C00043 00018 PRIMARY TABLE FOR INPUT SCANNER
C00045 00019 MORE SECONDARY TABLES
C00047 00020 FINISH WITH SOME VARIABLES
C00049 ENDMK
C⊗;
TITLE GCREF - MULTI FILE CREF LISTINGS
EXTERNAL JOBREL,JOBFF
P←17
PT←16; CURRENT LINK POINTER
ST←15; STATE
FR←14; FREE STORAGE POINTER
CONV←13; ARGUMENT FOR CONVRT
TA←12; T AND TA MUST BE CONSECUTIVE
T←11
NEW←10; POINTER TO NEW BLOCK
INP←7; INPUT POINTER
NBUF←4; # OF I/O BUFFERS
PLEN←40; LENGTH OF STACK
;FIRST WE INITIALIZE THE WORLD EVERYTIME WE START A NEW COMMAND
SKIPE SVJOB
JRST [ MOVE SVJOB ;THIS CORE IMAGE ALREADY RAN
MOVEM JOBFF ;RESTORE JOBFF
JRST GCREF]
MOVE JOBFF ;OTHERWISE,
MOVEM SVJOB# ;SAVE JOBFF FOR INITIALIZATION
GCREF: MOVE P,[IOWD PLEN,PDL] ;INIT STACK
SETZM SHORT ;INIT FLAGS - SHORT LISTING
SETZM GLBAL ; GLOBALS ONLY
SETZM LOCAL ; LOCALS ONLY
SETZM OUTPNT ;INIT POINTERS - DEFAULT OUTPUT FILE
SETZM INPNT ; START OF INPUT FILES
HRRZ FR,JOBFF ; START OF FREE STORAGE-1
SETZM STRUCT ; START OF DATA STRUCTURE
SETZM DEFPPN
HRLZI 'CRF'
MOVEM DEFEXT
SETZM ERROR ; ERROR FLAG
MOVE 1,JOBREL ; START WITH 1K OF FREE CORE
ADDI 1,2000
CALLI 1,11
JRST NOCORE
INIT 1, ; OPEN DISK
SIXBIT .DSK.
XWD OBUF,IBUF
JRST [ OUTSTR [ASCIZ . NO DISK.]
CALLI 12]
OUTSTR CRLF
OUTCHR ["*"] ;TELL HIM WE ARE READY
;GET THE COMMAND LINE AND PUT INTO THE COMMAND BUFFER
COMGET: MOVE 1,COMPNT ; READ LINE INTO COMMAND BUFFER
INCHWL 2
IDPB 2,1
CAIE 2,15 ; UNTIL CARRIAGE RETURN
JRST .-3
SETZM 2 ;CONVERT TO ASCIZ
IDPB 2,1
CLRBFI ;FLUSH LINE FEED FROM BUFFER
; SCAN COMMAND LINE FOR FILE NAME OR SWITCH
MOVE 1,COMPNT
SETZM 4
GETFIL: SETZM NAME
MOVE 2,[POINT 7,NAME] ; GET NEXT FILE SPECS
PUSHJ P,GETPAR ; LOOK FOR FILE NAME
SKIPN SNAM
JRST SPCERR
PUSH FR,SNAM
MOVEI PT,(FR)
CAIE 4,"."
JRST [PUSH FR,DEFEXT ; NO EXTENSION GIVEN
JRST ENDEXT]
IDPB 4,2
PUSHJ P,GETPAR ; LOOK FOR EXTENSION
PUSH FR,SNAM
MOVE SNAM
TRNE 777777
JRST SPCERR ; EXTENSION TOO LONG
MOVEM DEFEXT ; NEW DEFAULT
ENDEXT: PUSH FR,[0] ; THIS IS A LOOKUP BLOCK
CAIE 4,"["
JRST [PUSH FR,DEFPPN ; NO PPN GIVEN
JRST ENDPPN]
IDPB 4,2
PUSHJ P,GETPAR ; GET PPN
SKIPN 6,SNAM
JRST SPCERR
TLNN 6,77 ; RIGHT ADJUSTED
JRST [LSH 6,-6
JRST .-1]
PUSH FR,6
HLLM 6,DEFPPN
CAIE 4,","
JRST SPCERR
IDPB 4,2
PUSHJ P,GETPAR ; GET REST OF PPN
SKIPN 6,SNAM
JRST SPCERR
TLNN 6,77 ; ALSO RIGHT ADJUSTED
JRST [LSH 6,-6
JRST .-1]
HLRM 6,(FR)
HLRM 6,DEFPPN
IDPB 4,2
CAIN 4,"]"
JRST [ ILDB 4,1 ; GET NEXT BREAK CHARACTER
JRST ENDPPN]
SPCERR: OUTSTR CRLF
OUTSTR [ASCIZ .ILLEGAL FILE SPECIFICATION .]
OUTSTR NAME
IGLOUT: OUTSTR CRLF
JRST GCLOOP